home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs19.d81
/
spectrum.sfx
/
disk merge
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1992-09-01
|
2KB
|
66 lines
100 POKE53280,6:MT$="[154]":GOTO390
110 GET#FI,BY$:IFBY$<>""THENPRINT#3,BY$;:GOTO110
120 PRINT#3,NU$;:RETURN
130 GET#FI,BY$:IFBY$=""THENBY=0:RETURN
140 BY=ASC(BY$):RETURN
150 DV=WD/256:HI=INT(DV):LO=WD-HI*256:PRINT#3,CHR$(LO);CHR$(HI);:RETURN
160 GOSUB130:LO=BY:GOSUB130:LI(FI)=BY*256+LO
170 GOSUB130:LO=BY:GOSUB130:LN(FI)=BY*256+LO
180 IFLI(FI)>0THENPRINTTAB(9+(FI-1)*13);LN(FI);"[145]"
190 CA(FI)=CA(FI)+LS(FI):LS(FI)=LI(FI)-CA(FI):RETURN
200 LI(3)=LI(3)+LS(FI):WD=LI(3):GOSUB150:WD=LN(FI):GOTO150
210 GOSUB200:GOSUB110:GOTO160
220 IFLI(1)=0ANDLI(2)=0THENRETURN
230 IFLI(2)=0THENFI=1:GOSUB210:GOTO220
240 IFLI(1)=0THENFI=2:GOSUB210:GOTO220
250 IFLN(1)<LN(2)THENFI=1:GOSUB210:GOTO220
260 IFLN(1)>LN(2)THENFI=2:GOSUB210:GOTO220
270 FI=1:GOSUB210:FI=2:GOSUB280:GOTO220
280 GET#FI,BY$:IFBY$<>""THEN280
290 GOTO160
300 GOSUB130:LO=BY:GOSUB130:CA(FI)=BY*256+LO:RETURN
310 WD=CA(3):GOTO150
320 PRINT PROMPT$;"[160][160][160][160][160] [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]";
330 INPUT FI$:FC$=LEFT$(FI$,1)
340 NULL=FC$="[160]":QUIT=FC$="_":RETURN
350 OPEN FI,8,FI+2,"0:"+FI$
360 INPUT#15,EN,EM$,ET,ES
370 ERR=EN>19:IF ERR THEN PRINT" ERROR #"EN;EM$:CLOSE FI:PRINT"[145][145][145]"
375 FORI=1TO2500:NEXT:RETURN
390 DIM CA(3),LI(3),LN(2),LS(2)
400 NU$=CHR$(0)
410 PRINT:PRINT"[147]"MT$" DISK MERGE "
415 PRINT" ENTER '_' AT ANY PROMPT TO QUIT"
416 FORI=1TO20:PRINT"[192] ";:NEXT
420 OPEN 15,8,15
430 FI=1:PROMPT$=" PRIMARY FILE"
440 GOSUB 320:IF NULL THEN 440
450 IF QUIT THEN 700
460 GOSUB 350:IF ERR THEN 440
470 FI=2:PROMPT$=" SECONDARY FILE"
480 GOSUB 320:SECNULL=NULL
490 IF SECNULL THEN PRINT "*RELOCATE ONLY*":GOTO530
500 IF QUIT THEN 700
510 AF$=FI$
520 GOSUB 350:IF ERR THEN 480
530 FI=3:PROMPT$=" MERGED FILE"
540 GOSUB 320:IF NULL THEN 540
550 IF QUIT THEN 700
560 FI$=FI$+",P,W":GOSUB 350:IF ERR=0 THEN 620
570 IF EN<>70 THEN 540
580 PRINT "[145] [145]"
590 BF$=FI$:CLOSE 2:GOSUB 350:E2=ERR
600 FI=2:FI$=AF$:GOSUB350:FI=3:FI$=BF$
610 IF E2 THEN 530
620 PRINT" ------------ NOW MERGING -------------"
625 PRINT" PRI FILE # SEC FILE #"
630 PRINT" [183][183][183][183][183][183][183][183][183][183][183][183] [183][183][183][183][183][183][183][183][183][183][183][183]":BA$="1025"
640 CA(3)=VAL(BASE$):LI(3)=CA(3)
650 FI=1:GOSUB 300:GOSUB 160
660 IF NOT SECNULL THEN FI=2:GOSUB 300:GOSUB 160
670 GOSUB 310
680 GOSUB 220
690 PRINT#3,NU$;NU$;
700 CLOSE 3:CLOSE 2:CLOSE 1:CLOSE 15
710 PRINT" ALL DONE":END